﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

void menu();
int Add(int a, int b);//加
int Sub(int a, int b);//减
int Mul(int a, int b);//乘
int Div(int a, int b);//除

void Calc(int(*pf)(int, int))//这个一个函数，它的功能是调用其他(返回值和形参相同的)函数
{
	int x = 0;
	int y = 0;

	printf("输入两个数>>:");
	scanf("%d %d", &x, &y);

	int ret = pf(x, y);//调用回调函数

	printf("%d\n", ret);
}

int main()
{
	menu();//打印菜单
	int input = 0;

	do {
		printf("选择功能>>:");
		scanf("%d", &input);
		switch(input)
		{
			case 1:
				Calc(Add);//用函数调用其他函数
				break;
			case 2:
				Calc(Sub);
				break;
			case 3:
				Calc(Mul);
				break;
			case 4:
				Calc(Div);
				break;
		}
	} while (input);
}

void menu()
{
	printf("**************************************************\n");
	printf("*******1.Add                        2.Sub*********\n");
	printf("*******3.Mul                        4.Div*********\n");
	printf("*******0.exit                            *********\n");
	printf("**************************************************\n");
}

int Add(int a, int b)
{
	return a + b;
}
int Sub(int a, int b)
{
	return a - b;
}
int Mul(int a, int b)
{
	return a * b;
}
int Div(int a, int b)
{
	return a / b;
}